{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "5371a9bb",
   "metadata": {},
   "source": [
    "# Tracing Walkthrough"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "17c04cc6-c93d-4b6c-a033-e897577f4ed1",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "import os\n",
    "os.environ[\"LANGCHAIN_HANDLER\"] = \"langchain\"\n",
    "\n",
    "## Uncomment this if using hosted setup.\n",
    "\n",
    "# os.environ[\"LANGCHAIN_ENDPOINT\"] = \"https://langchain-api-gateway-57eoxz8z.uc.gateway.dev\" \n",
    "\n",
    "## Uncomment this if you want traces to be recorded to \"my_session\" instead of default.\n",
    "\n",
    "# os.environ[\"LANGCHAIN_SESSION\"] = \"my_session\"  \n",
    "\n",
    "## Better to set this environment variable in the terminal\n",
    "## Uncomment this if using hosted version. Replace \"my_api_key\" with your actual API Key.\n",
    "\n",
    "# os.environ[\"LANGCHAIN_API_KEY\"] = \"my_api_key\"  \n",
    "\n",
    "import langchain\n",
    "from langchain.agents import Tool, initialize_agent, load_tools\n",
    "from langchain.agents import AgentType\n",
    "from langchain.chat_models import ChatOpenAI\n",
    "from langchain.llms import OpenAI"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "1b62cd48",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "# Agent run with tracing. Ensure that OPENAI_API_KEY is set appropriately to run this example.\n",
    "\n",
    "llm = OpenAI(temperature=0)\n",
    "tools = load_tools([\"llm-math\"], llm=llm)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "bfa16b79-aa4b-4d41-a067-70d1f593f667",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n",
      "\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n",
      "\u001b[32;1m\u001b[1;3m I need to use a calculator to solve this.\n",
      "Action: Calculator\n",
      "Action Input: 2^.123243\u001b[0m\n",
      "Observation: \u001b[36;1m\u001b[1;3mAnswer: 1.0891804557407723\n",
      "\u001b[0m\n",
      "Thought:\u001b[32;1m\u001b[1;3m I now know the final answer.\n",
      "Final Answer: 1.0891804557407723\u001b[0m\n",
      "\n",
      "\u001b[1m> Finished chain.\u001b[0m\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'1.0891804557407723'"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "agent = initialize_agent(\n",
    "    tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True\n",
    ")\n",
    "\n",
    "agent.run(\"What is 2 raised to .123243 power?\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "4829eb1d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n",
      "\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n",
      "\u001b[32;1m\u001b[1;3mQuestion: What is 2 raised to .123243 power?\n",
      "Thought: I need a calculator to solve this problem.\n",
      "Action:\n",
      "```\n",
      "{\n",
      "  \"action\": \"calculator\",\n",
      "  \"action_input\": \"2^0.123243\"\n",
      "}\n",
      "```\n",
      "\u001b[0m\n",
      "Observation: calculator is not a valid tool, try another one.\n",
      "\u001b[32;1m\u001b[1;3mI made a mistake, I need to use the correct tool for this question.\n",
      "Action:\n",
      "```\n",
      "{\n",
      "  \"action\": \"calculator\",\n",
      "  \"action_input\": \"2^0.123243\"\n",
      "}\n",
      "```\n",
      "\n",
      "\u001b[0m\n",
      "Observation: calculator is not a valid tool, try another one.\n",
      "\u001b[32;1m\u001b[1;3mI made a mistake, the tool name is actually \"calc\" instead of \"calculator\".\n",
      "Action:\n",
      "```\n",
      "{\n",
      "  \"action\": \"calc\",\n",
      "  \"action_input\": \"2^0.123243\"\n",
      "}\n",
      "```\n",
      "\n",
      "\u001b[0m\n",
      "Observation: calc is not a valid tool, try another one.\n",
      "\u001b[32;1m\u001b[1;3mI made another mistake, the tool name is actually \"Calculator\" instead of \"calc\".\n",
      "Action:\n",
      "```\n",
      "{\n",
      "  \"action\": \"Calculator\",\n",
      "  \"action_input\": \"2^0.123243\"\n",
      "}\n",
      "```\n",
      "\n",
      "\u001b[0m\n",
      "Observation: \u001b[36;1m\u001b[1;3mAnswer: 1.0891804557407723\n",
      "\u001b[0m\n",
      "Thought:\u001b[32;1m\u001b[1;3mThe final answer is 1.0891804557407723.\n",
      "Final Answer: 1.0891804557407723\u001b[0m\n",
      "\n",
      "\u001b[1m> Finished chain.\u001b[0m\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'1.0891804557407723'"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Agent run with tracing using a chat model\n",
    "agent = initialize_agent(\n",
    "    tools, ChatOpenAI(temperature=0), agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True\n",
    ")\n",
    "\n",
    "agent.run(\"What is 2 raised to .123243 power?\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "76abfd82",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
